package com.nanako.wanxinp2p.account.service;

import com.nanako.wanxinp2p.api.account.model.AccountDTO;
import com.nanako.wanxinp2p.api.account.model.AccountLoginDTO;
import com.nanako.wanxinp2p.api.account.model.AccountRegisterDTO;
import com.nanako.wanxinp2p.common.domain.RestResponse;

public interface IAccountService {
    /**
     * 获取手机验证码
     *
     * @param mobile 手机号
     * @return
     */
    RestResponse getSMSCode(String mobile);

    /**
     * 校验手机号和验证码
     *
     * @param mobile
     * @param key
     * @param code
     * @return
     */
    Integer checkMobile(String mobile, String key, String code);

    /**
     登录功能
     @param accountLoginDTO 封装登录请求数据
     @return 用户及权限信息
     */
    AccountDTO login(AccountLoginDTO accountLoginDTO);


    /**
     * 账户注册
     * 分布式事务tcc：try
     * @param registerDTO 注册信息
     * @return
     */
    AccountDTO register(AccountRegisterDTO registerDTO);


    /**
     * 分布式事务tcc：confirm
     */
    void confirmRegister(AccountRegisterDTO registerDTO);

    /**
     * 分布式事务tcc：cancel
     */
    void cancelRegister(AccountRegisterDTO registerDTO);
}
